package com.hbnu.sync.domain.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import java.time.LocalDate;
import com.baomidou.mybatisplus.annotation.TableId;
import java.io.Serializable;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

/**
 * <p>
 * 
 * </p>
 *
 * @author jxl
 * @since 2025-08-23
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("sync_user")
@ApiModel(value="SyncUser对象", description="")
public class SyncUser implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @ApiModelProperty(value = "主键")
    @TableId(value = "UID", type = IdType.ASSIGN_ID)
    @JsonProperty("id")
    private  String uid;

    /**
     * 账号
     */
    @ApiModelProperty(value = "账户")
    @TableField("account")
    private String account;

    @ApiModelProperty(value = "权限名：校级审核员，院级审核员，院级教师")
    @TableField("roles")
    private String role;

    /**
     * 密码
     */
    @ApiModelProperty(value = "密码")
    @TableField("password")
    private String password;

    /**
     * 姓名
     */
    @ApiModelProperty(value = "姓名")
    @TableField("name")
    private String name;

    /**
     * 教工号
     */
    @ApiModelProperty(value = "教工号")
    @TableField("teacherID")
    private String teacherID;

    /**
     * 部门/院/系
     */
    @ApiModelProperty(value = "部门/院/系")
    @TableField("dept")
    private String dept;


    /**
     * 籍贯
     */
    @ApiModelProperty(value = "籍贯")
    @TableField("origin")
    private String origin;

    /**
     * 性别
     */
    @ApiModelProperty(value = "性别")
    @TableField("gender")
    private String gender;

    /**
     * 证件号码
     */
    @ApiModelProperty(value = "证件号码")
    @TableField("numID")
    private String numID;

    /**
     * 出生日期
     */
    @ApiModelProperty(value = "出生日期")
    @TableField("birthday") //fill = FieldFill.INSERT 自动填入
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate birthday;

    /**
     * 最后学历
     */
    @ApiModelProperty(value = "最后学历")
    @TableField("finalEducation")
    private String finalEducation;

    /**
     * 最后学位
     */
    @ApiModelProperty(value = "最后学位")
    @TableField("finalDegree")
    private String finalDegree;

    /**
     * 职称级别
     */
    @ApiModelProperty(value = "职称级别")
    @TableField("titleLevel")
    private String titleLevel;

    /**
     * 职称
     */
    @ApiModelProperty(value = "职称")
    @TableField("title")
    private String title;

    /**
     * 政治面貌
     */
    @ApiModelProperty(value = "政治面貌")
    @TableField("outlook")
    private String outlook;

    /**
     * 职务类别
     */
    @ApiModelProperty(value = "职务类别")
    @TableField("jobCategory")
    private String jobCategory;

    /**
     * 定职日期
     */
    @ApiModelProperty(value = "定职日期")
    @TableField("appoindate")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate appoindate;

    /**
     * 职务
     */
    @ApiModelProperty(value = "职务")
    @TableField("duties")
    private String duties;

    /**
     * 学科门类
     */
    @ApiModelProperty(value = "学科门类")
    @TableField("disciplineCategories")
    private String disciplineCategories;

    /**
     * 一级学科
     */
    @ApiModelProperty(value = "一级学科")
    @TableField("firstDiscipline")
    private String firstDiscipline;

    /**
     * 二级学科
     */
    @ApiModelProperty(value = "二级学科")
    @TableField("secondaryDiscipline")
    private String secondaryDiscipline;

    /**
     * 三级学科
     */
    @ApiModelProperty(value = "三级学科")
    @TableField("tertiaryDiscipline")
    private String tertiaryDiscipline;

    /**
     * 研究方向
     */
    @ApiModelProperty(value = "研究方向")
    @TableField("direction")
    private String direction;

    /**
     * 办公电话
     */
    @ApiModelProperty(value = "办公电话")
    @TableField("officePhone")
    private String officePhone;

    /**
     * 传真
     */
    @ApiModelProperty(value = "传真")
    @TableField("fax")
    private String fax;

    /**
     * 手机
     */
    @ApiModelProperty(value = "手机")
    @TableField("phone")
    private String phone;

    /**
     * QQ帐号
     */
    @ApiModelProperty(value = "QQ帐号")
    @TableField("QQ")
    private String QQ;

    /**
     * Email
     */
    @ApiModelProperty(value = "Email")
    @TableField("Email")
    private String Email;

    /**
     * 联系地址
     */
    @ApiModelProperty(value = "联系地址")
    @TableField("address")
    private String address;

    /**
     * 邮编
     */
    @ApiModelProperty(value = "邮编")
    @TableField("zipcode")
    private String zipcode;

    /**
     * 简介
     */
    @ApiModelProperty(value = "简介")
    @TableField("introduction")
    private String introduction;

    /**
     * 荣誉
     */
    @ApiModelProperty(value = "荣誉")
    @TableField("honor")
    private String honor;

    /**
     * 照片
     */
    @ApiModelProperty(value = "照片")
    @TableField("image")
    private String image;

    /**
     * 曾用名
     */
    @ApiModelProperty(value = "曾用名")
    @TableField("usedname")
    private String usedname;

    /**
     * 人员目前状态
     */
    @ApiModelProperty(value = "人员目前状态")
    @TableField("nowState")
    private String nowState;

    /**
     * 技术职位
     */
    @ApiModelProperty(value = "技术职位")
    @TableField("techTitle")
    private String techTitle;

    /**
     * 技术职位任职日期
     */
    @ApiModelProperty(value = "技术职位任职日期")
    @TableField("techDate")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate techDate;

    /**
     * 国籍
     */
    @ApiModelProperty(value = "国籍")
    @TableField("nationality")
    private String nationality;

    /**
     * 住宅电话
     */
    @ApiModelProperty(value = "住宅电话")
    @TableField("homePhone")
    private String homePhone;

    /**
     * 是否博士后
     */
    @ApiModelProperty(value = "是否博士后")
    @TableField("postdoctor")
    private String postdoctor;

    /**
     * 学院编号
     */
    @ApiModelProperty(value = "学院编号")
    @TableField("deptCode")
    private String deptCode;


    @TableField(value = "token",exist = false)
    private String token;

    //
    @TableField(value = "status",exist = false)
    private int login_status ;

}
